home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / mint / utils / initsnb.zoo / init / sh / mkbuilti < prev    next >
Text File  |  1992-09-09  |  3KB  |  107 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1991 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # This code is derived from software contributed to Berkeley by
  7. # Kenneth Almquist.
  8. #
  9. # Redistribution and use in source and binary forms, with or without
  10. # modification, are permitted provided that the following conditions
  11. # are met:
  12. # 1. Redistributions of source code must retain the above copyright
  13. #    notice, this list of conditions and the following disclaimer.
  14. # 2. Redistributions in binary form must reproduce the above copyright
  15. #    notice, this list of conditions and the following disclaimer in the
  16. #    documentation and/or other materials provided with the distribution.
  17. # 3. All advertising materials mentioning features or use of this software
  18. #    must display the following acknowledgement:
  19. #    This product includes software developed by the University of
  20. #    California, Berkeley and its contributors.
  21. # 4. Neither the name of the University nor the names of its contributors
  22. #    may be used to endorse or promote products derived from this software
  23. #    without specific prior written permission.
  24. #
  25. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  26. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  28. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  29. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  31. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  32. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  35. # SUCH DAMAGE.
  36. #
  37. #    @(#)mkbuiltins    5.2 (Berkeley) 3/8/91
  38.  
  39. temp=/tmp/ka$$
  40. havejobs=0
  41. if grep '^#define JOBS[     ]*1' shell.h > /dev/null
  42. then havejobs=1
  43. fi
  44. exec > builtins.c
  45. cat <<\!
  46. /*
  47.  * This file was generated by the mkbuiltins program.
  48.  */
  49.  
  50. #include "shell.h"
  51. #include "builtins.h"
  52.  
  53. !
  54. awk '
  55. /^[^#]/    {
  56.           if ('$havejobs' || $2 != "-j")
  57.             print $0
  58.          }
  59. ' builtins.def | sed 's/-j//' > $temp
  60. awk '
  61.         {
  62.           printf "int %s();\n", $1
  63.         }
  64. ' $temp
  65. echo '
  66. int (*const builtinfunc[])() = {'
  67. awk '
  68. /^[^#]/    {
  69.           printf "\t%s,\n", $1
  70.         }
  71. ' $temp
  72. echo '};
  73.  
  74. const struct builtincmd builtincmd[] = {'
  75. awk '
  76.   {
  77.     for (i = 2 ; i <= NF ; i++)
  78.       {
  79.         printf "\t\"%s\", %d,\n",  $i, NR-1
  80.       }
  81.   }
  82. ' $temp
  83. echo ' NULL, 0
  84. };'
  85.  
  86. exec > builtins.h
  87. cat <<\!
  88. /*
  89.  * This file was generated by the mkbuiltins program.
  90.  */
  91.  
  92. !
  93. tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ < $temp | awk '
  94.         {
  95.           printf "#define %s %d\n", $1, NR-1
  96.         }
  97. '
  98. echo '
  99. struct builtincmd {
  100.       char *name;
  101.       int code;
  102. };
  103.  
  104. extern int (*const builtinfunc[])();
  105. extern const struct builtincmd builtincmd[];'
  106. rm -f $temp
  107.